x86/mmcfg: misc adjustments
- fix the mapping range (end_bus_number is inclusive)
- fix the mapping base address (shifting segment by 22 was set for
overlapping mappings; assuming the goal was to reduce the virtual
space used when less than 256 busses are present on all segments,
adding logic to determine the smallest possible shift value)
- fix PCI_MCFG_VIRT_END, and actually use it to avoid creating
- mappings
outside the designated range
- fix address calculations (segment numbers must be converted to long
to avoid truncation)
- add a way (command line option) to suppress the use of mmconfig as
well as to actually use the AMD Fam10 special code
- correct __init annotations
- use xmalloc()/xmalloc_array() in favor of xmalloc_bytes()
- eliminate dead code and data
Signed-off-by: Jan Beulich <jbeulich@novell.com>